MapReduce Fault-Tolerance

服务器容错设计

  • Node ManagerResource Manager发送心跳包。服务器宕机后,Resource Manager会通知所有受影响的Application Master
  • Node Manager会追踪所有当前服务器上运行的任务。如果有正在进行中的任务被终止,Node Manager将任务标记为idle, 并且重启任务
  • Application MasterResource Manager发送心跳包。一旦心跳停止,Resource Manager重启Application MasterApplication Master同步执行中任务的信息

Resource Manager容错设计

  • 使用旧的checkpoints,启动secondary Resource Manager

为了避免消息传输在网络中消耗过多的资源,container分配请求是通过心跳包传输的的

stragglers(落后者)

straggler是指集群中执行缓慢的任务。每个阶段,执行最慢的任务,决定了总体的速度。straggler的原因可能有很多:磁盘损坏、网络拥堵、CPU瓶颈、内存瓶颈

容错设计:

  • 跟踪记录每个任务的进度
  • speculative execuation: 对straggler另起一份副本执行(repliacted execuation)。一旦其中一份副本(replica)执行完成,整个任务被标记为完成。

假设job1job2job3的完成进度分别为90%50%10%Application Master会在另一台服务器上运行job3replica。一旦其中一个job3完成,整个任务会被标记为完成。

地方性(locality)

  • 云具有继承性拓扑,机架内通信一般会快于跨核心交换机的通信
  • 数据被分成chunk,在不同机架备份三份
  • MapReduce 会根据网络距离调度任务 : 拥有对应数据副本的节点 > 在同一机架的节点 > 任意地点

s09g
24 声望6 粉丝